/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wf3.util;

import java.util.ArrayList;
import java.util.List;
import wf.dto.Ubigeo;

/**
 *
 * @author Rómulo Galindo Tanta
 */
public class Util {

    private static List<Departamento> departamentos = new ArrayList<>();

    public static synchronized void buildUbigeo(List<Ubigeo> ubigeos) {
        List<Ubigeo> provincias = new ArrayList<>();
        String no_ubigeo = ubigeos.get(0).getNo_depart();
        for (Ubigeo ubi : ubigeos) {

            if (ubi.getNo_depart().contentEquals(no_ubigeo)) {
                provincias.add(ubi);
            } else {
                departamentos.add(new Departamento(provincias));
                provincias = null;
                provincias = new ArrayList<>();
                provincias.add(ubi);
            }
            no_ubigeo = ubi.getNo_depart();
        }
        if (provincias.size() > 0) {
            departamentos.add(new Departamento(provincias));
        }
    }

    public static List<Departamento> getDepartamentos() {
        return departamentos;
    }

    public static List<Provincia> getProvincias(String co_depart) {
        return departamentos.get(0).getProvincias();
    }

    public static List<Distrito> getDistritos(String co_distri) {
        return departamentos.get(0).getProvincias().get(0).getDistritos();
    }

    public static Departamento findDepartamento(String co_depart) {
        Departamento departamento = null;
        for (Departamento dep : departamentos) {
            if (dep.getCo_depart().contentEquals(co_depart)) {
                departamento = dep;
                break;
            }
        }
        return departamento;
    }

    public static Provincia findProvincia(Departamento departamento, String co_distri) {
        Provincia provincia = null;
        for (Provincia pro : departamento.getProvincias()) {
            if (pro.getCo_provin().contentEquals(co_distri)) {
                provincia = pro;
                break;
            }
        }
        return provincia;
    }

    public static Distrito findDistrito(Provincia provincia, String co_provin) {
        Distrito distrito = null;
        for (Distrito dst : provincia.getDistritos()) {
            if (dst.getCo_distri().contentEquals(co_provin)) {
                distrito = dst;
                break;
            }
        }
        return distrito;
    }
}
